//
//  WBStatusCell.swift
//  微博
//
//  Created by 康智桐 on 2018/5/1.
//  Copyright © 2018年 Kk. All rights reserved.
//

import UIKit


/// 微博 Cell 的协议
/// 如果需要设置可选协议方法
/// - 需要遵守 NSObjectProtocol 协议
/// - 协议需要是 @objc 的
/// - 方法需要 @objc optional
@objc protocol WBStatusCellDelegate: NSObjectProtocol {
    
    /// 微博 Cell 选中 URL 字符串
    @objc optional func statusCellDidSelectedURLString(cell: WBStatusCell, urlString: String)
}


class WBStatusCell: UITableViewCell {
    
    /// 代理属性
    weak var delegate: WBStatusCellDelegate?
    
    //微博视图模型
    var viewModel:WBStatusViewModel? {
        didSet{
            //微博文本
            statusLabel?.attributedText = viewModel?.statusAttrText
            
            //设置被转发微博的文字
            retweetedLabel?.attributedText = viewModel?.retweetedAttrText

            
            
            //姓名
            nameLabel.text = viewModel?.status.user?.screen_name
            
            //设置会员图标
            memberIconView.image = viewModel?.memberIcon
            
            //认证图标
            vipIconView.image = viewModel?.vipIcon
            
            //用户头像
            iconView.cz_setImage(urlString: viewModel?.status.user?.profile_image_url, placeholderImage: UIImage(named:"avatar_default_big"),isAvatar: true)
            
             //底部工具栏
            toolBar.viewModel = viewModel
            
            
            //配图视图 视图模型
            pictureView.viewMode = viewModel
            
            
            //设置配图视图的高度
            //pictureView.heightCons.constant = viewModel?.pictrueViewSize.height ?? 0
            
            
//            //测试4张图像
//            if (viewModel?.status.pic_urls?.count)! > 4 {
//                
//                var picURLs = viewModel!.status.pic_urls!
//                
//                picURLs.removeSubrange((picURLs.startIndex + 4 )..<picURLs.endIndex)
//                
//                pictureView.urls = picURLs       
//            }else {
//                
//            }
            //设置配图视图的url数据
          //  pictureView.urls = viewModel?.picURLs
            
            
            //设置微博信息来源
            //sourceLabel.text = viewModel?.status.source
            sourceLabel.text = viewModel?.sourceStr
            
            

        }
        
    }
    
    @IBOutlet weak var iconView: UIImageView!//头像
    
    @IBOutlet weak var nameLabel: UILabel!//姓名
    
    @IBOutlet weak var memberIconView: UIImageView!//会员
    
    @IBOutlet weak var timeLabel: UILabel!//时间
    
    @IBOutlet weak var sourceLabel: UILabel!//来源
    
    @IBOutlet weak var vipIconView: UIImageView!//vip认证图标
    
    @IBOutlet weak var statusLabel: FFLabel!//微博正文
    
    @IBOutlet weak var toolBar: WBStatusToolBar!//底部工具栏
    
    @IBOutlet weak var pictureView: WBStatusPictureView!//配图视图
    
    @IBOutlet weak var retweetedLabel: FFLabel? //被转发微博的文本标签

    

    override func awakeFromNib() {
        super.awakeFromNib()
      
        
        //离屏渲染-异步绘制
        
        self.layer.drawsAsynchronously = true
        
        //栅格化 - 异步绘制之后会生成一张独立的图像，cell在屏幕上滚动的时候，本质上滚动的是这张图片
        
        //cell优化，要尽量减少图层的数量。相当于就只有一层
        //停止滚动之后可以接受监听
        self.layer.shouldRasterize = true
        //使用栅格化必须注意指定分辨率
        self.layer.rasterizationScale = UIScreen.main.scale
        
        //设置
        statusLabel.delegate = self
        retweetedLabel?.delegate = self
        
    }

   
}
extension WBStatusCell: FFLabelDelegate {
    
    func labelDidSelectedLinkText(label: FFLabel, text: String) {
        
        // 判断是否是 URL
        if !text.hasPrefix("http://") {
            return
        }
        
        // 插入 ? 表示如果代理没有实现协议方法，就什么都不做
        // 如果使用 !，代理没有实现协议方法，仍然强行执行，会崩溃！
        delegate?.statusCellDidSelectedURLString?(cell: self, urlString: text)
    }
}


